
/**
 * promise封装get请求
 * @param {string} url 请求地址
 * @param {object} params 请求参数
 * @param {string} type 后端返回数据类型
 * @param {object} headers 自定义请求头
 * @returns 
 */
function get(url,params,type,headers){
    const p =((resolve,reject) => {
        const xhr = new XMLHttpRequest
        xhr.onreadystatechange = function(){
          if(xhr.readyState===4){
              if(xhr.status===200){
                  let res = this.responseText
                  if(type==='json') res=JSON.parse(res)
                  resolve(res)
              }else{
                  reject(xhr.status)
              }
          }
        }
        // 数据过滤
        let temp=[]
        for(let key in params){
            temp.push(`${key}=${params[key]}`)
        }
        let data=temp.join('&')
        xhr.open('get',`${url}?${data}`)
        for(let key in headers){
            xhr.setRequestHeader=(key,headers[key])
        }
        xhr.send(null)
    })
    return p
    // 返回promise对象
}




/**
 * promise封装post请求
 * @param {string} url 请求地址
 * @param {object} params 请求参数
 * @param {string} type 后端返回数据类型
 * @param {object} headers 自定义请求头
 * @returns 
 */
function post(url,params,type,headers){
    const p =((resolve,reject) => {
        const xhr = new XMLHttpRequest
        xhr.onreadystatechange = function(){
          if(xhr.readyState===4){
              if(xhr.status===200){
                  let res = this.responseText
                  if(type==='json') res=JSON.parse(res)
                  resolve(res)
              }else{
                  reject(xhr.status)
              }
          }
        }
        let temp=[]
        for(let key in params){
            temp.push(`${key}=${params[key]}`)
        }
        let data=temp.join('&')
        xhr.open('post',url)
        xhr.setRequestHeader('content-type','application/x-www-form-urlencoded')
        for(let key in headers){
            xhr.setRequestHeader(key,headers[key])
        }
        xhr.send(data)
    })
    return p
}